home *** CD-ROM | disk | FTP | other *** search
-
- *
- *DOUBLE TO SINGLE (A TO B)
- *
- XTOS $MACRO A,B
- $VAR L,L1,L2,L3
- $ASG '$$LAB' TO L.S
- $ASG L.SV+3 TO L.SV GET LABEL
- $ASG L.SV-2 TO L1.V
- $ASG L.SV-1 TO L2.V
- $ASG L.SV TO L3.V
- LCAC 32767 GET BIGGEST SINGLE
- SUBX :A: COMPARE :A:
- BGEZ L$:L1.V: IF :A: >= 32767 THEN
- LCAC 32767 SATURATE AT 32767
- B L$:L3.V: JUMP TO DONE
- L$:L1.V: LCAC -32768 GET MOST NEG SINGLE
- SUBX :A: COMPARE :A:
- BLEZ L$:L2.V: IF :A: <= -32768 THEN
- LCAC -32768 SATURATE AT -32768
- B L$:L3.V: JUMP TO DONE
- L$:L2.V: LDAX :A: LOAD :A:
- L$:L3.V: SACL :B:,0 RESTORE TO :B:
- $END